www.gusucode.com > 动网论坛Dvbbs v8.3 > 动网论坛Dvbbs v8.3\code\源程序\admin\Update.asp
<!--#include file="../conn.asp"--> <!--#include file="inc/const.asp"--> <!--#include file="../inc/dv_clsother.asp"--> <!--#include file="../inc/ubblist.asp"--> <% Head() Server.ScriptTimeout=9999999 dim admin_flag admin_flag=Split("14,20",",") CheckAdmin(","&admin_flag(0)&",") CheckAdmin(","&admin_flag(1)&",") Dim tmprs,body Call main() Footer() sub main() Dim i %> <table cellpadding="0" cellspacing="0" border="0" width="100%" align="center"> <tr> <th style="text-align:center;" colspan=2>论坛数据处理</th> </tr> <tr> <td width="20%" class="td1" height=25>注意事项</td> <td width="80%" class="td1">下面有的操作可能将非常消耗服务器资源,而且更新时间很长,请仔细确认每一步操作后执行。</td> </tr> <% If request("action")="updat" Then If request("submit")="更新分版面数据" Or request("submit")="更新论坛数据" Then call updateboard() ElseIf request("submit")="修 复" Then call fixtopic() ElseIf request("submit")="清空在线用户" Then call Delallonline() ElseIf request("submit")="更新收藏夹" Then call Updatebm() Else call updateall() End If If founderr Then response.write errmsg Else response.write body End If ElseIf request("action")="fix" Then Call Fixbbs() If founderr Then response.write errmsg Else response.write body End If ElseIf request("action")="delboard" then if isnumeric(request("boardid")) then Dvbbs.Execute("update dv_topic set boardid=444 where boardid="&request("boardid")) for i=0 to ubound(AllPostTable) Dvbbs.Execute("update "&AllPostTable(i)&" set boardid=444 where boardid="&request("boardid")) next end if response.write "<tr><td align=left colspan=2 height=23 class=td1>清空论坛数据成功,请返回更新帖子数据!</td></tr>" elseif request("action")="updateuser" then %> <FORM METHOD=POST ACTION="?action=updateuserinfo"> <tr> <th style="text-align:center;" colspan=2>更新用户数据</th> </tr> <tr> <td width="20%" class="td1">重新计算用户发贴</td> <td width="80%" class="td1">执行本操作将按照<font color=red>当前论坛数据库</font>发贴重新计算所有用户发表帖子数量。</td> </tr> <tr> <td width="20%" class="td1">开始用户ID</td> <td width="80%" class="td1"><input type=text name="beginID" value="1" size=10> 用户ID,可以填写您想从哪一个ID号开始进行修复</td> </tr> <tr> <td width="20%" class="td1">结束用户ID</td> <td width="80%" class="td1"><input type=text name="endID" value="100" size=10> 将更新开始到结束ID之间的用户数据,之间的数值最好不要选择过大</td> </tr> <tr> <td width="20%" class="td1"> </td> <td width="80%" class="td1"><input type="submit" class="button" name="Submit" value="重新计算用户发贴"></td> </tr> </form> <FORM METHOD=POST ACTION="?action=updateuserinfo"> <tr> <td width="20%" class="td1" valign=top>更新用户等级</td> <td width="80%" class="td1">执行本操作将按照<font color=red>当前论坛数据库</font>用户发贴数量和论坛的等级设置重新计算用户等级,本操作不影响等级为贵宾、版主、总版主的数据。</td> </tr> <tr> <td width="20%" class="td1">开始用户ID</td> <td width="80%" class="td1"><input type=text name="beginID" value="1" size=10> 用户ID,可以填写您想从哪一个ID号开始进行修复</td> </tr> <tr> <td width="20%" class="td1">结束用户ID</td> <td width="80%" class="td1"><input type=text name="endID" value="100" size=10> 将更新开始到结束ID之间的用户数据,之间的数值最好不要选择过大</td> </tr> <tr> <td width="20%" class="td1"> </td> <td width="80%" class="td1"><input type="submit" class="button" name="Submit" value="更新用户等级"></td> </tr> </form> <FORM METHOD=POST ACTION="?action=updateuserinfo"> <tr> <td width="20%" class="td1" valign=top>更新用户金钱/积分/魅力</td> <td width="80%" class="td1">执行本操作将按照<font color=red>当前论坛数据库</font>用户的发贴数量和论坛的相关设置重新计算用户的金钱/积分/魅力,本操作也将重新计算贵宾、版主、总版主的数据<BR>注意:不推荐用户进行本操作,本操作在数据很多的时候请尽量不要使用,并且本操作对各个版面删除帖子等所扣相应分值不做运算,只是按照发贴和总的论坛分值设置进行运算,请大家慎重操作,<font color=red>而且本项操作将重置用户因为奖励、惩罚等原因管理员对用户分值的修改。</font></td> </tr> <tr> <td width="20%" class="td1">开始用户ID</td> <td width="80%" class="td1"><input type=text name="beginID" value="1" size=10> 用户ID,可以填写您想从哪一个ID号开始进行修复</td> </tr> <tr> <td width="20%" class="td1">结束用户ID</td> <td width="80%" class="td1"><input type=text name="endID" value="100" size=10> 将更新开始到结束ID之间的用户数据,之间的数值最好不要选择过大</td> </tr> <tr> <td width="20%" class="td1"> </td> <td width="80%" class="td1"><input type="submit" class="button" name="Submit" value="更新用户金钱/积分/魅力"></td> </tr> </FORM> <% elseif request("action")="updateuserinfo" then if request("submit")="重新计算用户发贴" then call updateTopic() elseif request("submit")="更新用户等级" then call updategrade() else call updatemoney() end if if founderr then response.write errmsg else response.write body end if else '主题数,帖子数,用户数,今日贴,昨日贴,总固顶,最后注册 %> <tr> <th style="text-align:center;" colspan=2>更新论坛数据</th> </tr> <form action="update.asp?action=updat" method=post> <tr> <td width="20%" class="td2">更新总论坛数据</td> <td width="80%" class="td2"> <input type="checkbox" class="checkbox" name="u1" value="1"> 主题数 <input type="checkbox" class="checkbox" name="u2" value="1"> 帖子数 <input type="checkbox" class="checkbox" name="u3" value="1"> 用户数 <input type="checkbox" class="checkbox" name="u4" value="1" checked> 今日帖 <input type="checkbox" class="checkbox" name="u5" value="1" checked> 昨日帖 <input type="checkbox" class="checkbox" name="u6" value="1"> 总固顶 <input type="checkbox" class="checkbox" name="u7" value="1"> 最后注册 <BR><BR><input type="submit" class="button" name="Submit" value="更新论坛总数据"><BR><BR>这里将重新计算整个论坛的帖子主题和回复数,今日帖子,最后加入用户等,建议每隔一段时间运行一次。<hr size=1></td> </tr> <tr> <td width="20%" class="td1">更新分版面数据</td> <td width="80%" class="td1"><input type="submit" class="button" name="Submit" value="更新分版面数据"><BR><BR>这里将重新计算每个版面的帖子主题和回复数,今日帖子,最后回复信息等,建议每隔一段时间运行一次。<hr size=1> </td> </tr> <tr> <td width="20%" class="td2">更新论坛收藏夹</td> <td width="80%" class="td2"><input type="submit" class="button" name="Submit" value="更新收藏夹"><BR><BR>这里将重新整理论坛的收藏夹,删除不存在用户的收藏记录,重新指向被移动的帖子收藏地址,删除已被删除的帖子收藏记录。 </td> </tr> <tr> <th style="text-align:center;" colspan=2>修复帖子(修复指定范围内帖子的最后回复数据)</th> </tr> <tr> <td width="20%" class="td1">开始的ID号</td> <td width="80%" class="td1"><input type=text name="beginID" value="1" size=10> 帖子主题ID,可以填写您想从哪一个ID号开始进行修复</td> </tr> <tr> <td width="20%" class="td2">结束的ID号</td> <td width="80%" class="td2"><input type=text name="EndID" value="1000" size=10> 将更新开始到结束ID之间的帖子数据,之间的数值最好不要选择过大</td> </tr> <tr> <td width="20%" class="td1"> </td> <td width="80%" class="td1"><input type="submit" class="button" name="Submit" value="修 复"></td> </tr> </form> <form name=Fix action="update.asp?action=fix" method=post> <tr> <th style="text-align:center;" colspan=2>修正贴子UBB标签(修复指定范围贴子UBB标签)</th> </tr> <tr> <td width="20%" class="td1">开始的ID号</td> <td width="80%" class="td1"><input type=text name="beginID" value="1" size=10> 帖子主题ID,可以填写您想从哪一个ID号开始进行修复</td> </tr> <tr> <td width="20%" class="td2">结束的ID号</td> <td width="80%" class="td2"><input type=text name="EndID" value="1000" size=10> 将更新开始到结束ID之间的帖子数据,之间的数值最好不要选择过大</td> </tr> <tr> <td width="20%" class="td1">新老贴的标识日期</td> <td width="80%" class="td1"><input type="text" name="updatedate" value="2003-12-1">(格式:YYYY-M-D) 就是论坛升级到v7.0的日期,如果不填写,一律按老贴处理</td> </tr> <tr> <td width="20%" class="td2">去掉贴子中的HTML标记</td> <td width="80%" class="td2">是 <input type="radio" class="radio" name="killhtml" value="1"> 否 <input type="radio" class="radio" name="killhtml" value="0" checked> <br>选是的话,贴子中的HTML标记将会自动被清除,有利于减少数据库的大小,但是会失去原来的HTML效果。</td> </tr> <tr> <td width="20%" class="td1"> </td> <td width="80%" class="td1"><input type="submit" class="button" name="Submit" value="修 正"></td> </tr> </form> <% end if %> </table><BR><BR> <% end sub Sub updateboard() '先按照所有版面ID得出帖子数,然后计算各个有下属论坛的帖子总和 Dim allarticle Dim alltopic Dim alltoday Dim allboard Dim trs,Esql,ars,rs,i Dim Maxid Dim LastTopic,LastRootid,LastPostTime,LastPostUser Dim LastPost,uploadpic_n,Lastpostuserid,Lastid Dim ParentStr Dim C,C1,C2 Dim reBoard_Setting,BoardTopStr,IsGroupSetting Dim UserAccessCount,UpGroupSetting,ii Dim Slastpost ii=0 '设置打开数据时间 conn.CommandTimeout=3600 '获得要更新的总数 If IsNumeric(request("boardid")) And request("boardid")<>"" Then Set Rs=Dvbbs.Execute("Select Count(*) From [Dv_board] Where BoardID="&request("boardid")) C1=rs(0) If Isnull(C1) Then C1=0 Else Set Rs=Dvbbs.Execute("Select Count(*) From [Dv_board]") C1=rs(0) If Isnull(C1) Then C1=0 End If Set Rs=Nothing %> </table><BR> <table cellpadding="0" cellspacing="0" border="0" width="100%" align="center"> <tr><td colspan=2 class=td1> 下面开始更新论坛版面资料,共有<%=C1%>个版面需要更新 <table width="400" border="0" cellspacing="1" cellpadding="1"> <tr> <td bgcolor=#000000> <table width="400" border="0" cellspacing="0" cellpadding="1"> <tr> <td bgcolor=#ffffff height=9><img src="../skins/default/bar/bar3.gif" width=0 height=16 id=img2 name=img2 align=absmiddle></td></tr></table> </td></tr></table> <span id=txt2 name=txt2 style="font-size:9pt">0</span><span style="font-size:9pt">%</span></td></tr> </table> <% Response.Flush '排序按照Child和Orders,以便先更新下级论坛的数据才循环到上级版面,这时上级版面读取的就是下级版面的最新数据 If IsNumeric(request("boardid")) And request("boardid")<>"" Then Set Rs=Dvbbs.Execute("Select BoardID,BoardType,Child,ParentStr,RootID,Board_Setting,BoardTopStr,IsGroupSetting From Dv_Board Where BoardID="&Request("BoardID")) Else Call Boardchild() '统计更新下属论坛个数 YZ-2004-2-26注 Set Rs=Dvbbs.Execute("Select BoardID,BoardType,Child,ParentStr,RootID,Board_Setting,BoardTopStr,IsGroupSetting From Dv_Board Order by Child,RootID,Orders Desc") End If Dim SQL, LastPostArr 'LastPostArr XG增加2007-04-11 If Not Rs.EOF Then SQL=Rs.GetRows(-1) Set Rs=Nothing For i=0 to UBound(SQL,2) 'Do While Not Rs.Eof reBoard_Setting=Split(SQL(5,i)&"",",") AllBoard = 0 '所有主题和帖子 Set Trs=Dvbbs.Execute("Select Count(*),Sum(Child) From Dv_Topic Where BoardID="&SQL(0,i)) AllTopic=Trs(0) AllArticle=Trs(1) If IsNull(AllTopic) Then AllTopic = 0 If IsNull(AllArticle) Then AllArticle = 0 AllArticle = AllArticle + AllTopic Set Trs=Nothing '所有今日贴 If IsSqlDataBase = 1 Then Set Trs=Dvbbs.Execute("Select Count(*) From "&Dvbbs.NowUseBBS&" Where BoardID="&SQL(0,i)&" and datediff(d,dateandtime,"&SqlNowString&")=0") Else Set Trs=Dvbbs.Execute("Select Count(*) From "&Dvbbs.NowUseBBS&" Where BoardID="&SQL(0,i)&" and datediff('d',dateandtime,"&SqlNowString&")=0") End If AllToday=Trs(0) Set Trs=Nothing If IsNull(AllToday) Then AllToday=0 '最后回复信息 Set Trs=Dvbbs.Execute("Select Top 1 LastPost,TopicID,Title,PostTable From Dv_Topic Where BoardID="&SQL(0,i)&" Order by LastPostTime Desc") If Not (Trs.Eof And Trs.Bof) Then LastPostArr = Split(Trs(0)&"","$") If UBound(LastPostArr)<7 Then ReDim LastPostArr(7) LastPostArr(1)=Trs(3) LastPostArr(3)= Replace(cutStr(Dvbbs.Replacehtml(Trs(2)),20),"$","$") LastPostArr(6)=Trs(1) Trs.Close:Set Trs=Nothing Set Trs = Dvbbs.Execute("Select Top 1 AnnounceID,BoardID,UserName,DateAndTime,PostUserID From "&LastPostArr(1)&" Where RootID="&LastPostArr(6)&" Order by DateAndTime") If Not (Trs.Eof And Trs.Bof) Then LastPostArr(0) = Trs(2) LastPostArr(1) = Trs(0) LastPostArr(2) = Trs(3) LastPostArr(4) = "" LastPostArr(5) = Trs(4) LastPostArr(7) = Trs(1) Else LastPostArr(0) = "无" LastPostArr(1) = 0 LastPostArr(2) = now() LastPostArr(3) = "无" LastPostArr(4) = "" LastPostArr(5) = "" LastPostArr(6) = "" LastPostArr(7) = "" End if Else LastPostArr(3)= Replace(cutStr(Trs(2),20),"$","$") End if Trs.Close:Set Trs=Nothing LastPost=Join(LastPostArr,"$") LastPost=Replace(Dvbbs.Replacehtml(LastPost&""),"'","''") 'LastPost=Replace(Dvbbs.Replacehtml(Trs(0)&""),"'","''") Else Trs.Close:Set Trs=Nothing LastPost="无$0$"&Now()&"$无$$$$" End If '更新当前版面数据 'SLastPost = Split(LastPost,"$") 'If Ubound(SLastPost) < 7 Then LastPost = LastPost & "$" Dvbbs.Execute("Update [Dv_board] Set PostNum="&AllArticle&",TopicNum="&AllTopic&",TodayNum="&AllToday&",LastPost='"&Dvbbs.ChkBadWords(LastPost)&"' Where BoardID="&SQL(0,i)) '如果当前版面有下属论坛,则更新其数据为下属论坛数据 If SQL(2,i)>0 Then '帖子总数,主题总数,今日贴总数,下属版面数 If SQL(3,i)=0 Then ParentStr=SQL(0,i) 'Set Trs=Dvbbs.Execute("Select Sum(PostNum),Sum(TopicNum),Sum(TodayNum),Count(*) From Dv_board Where (Not BoardID="&SQL(0,i)&") And RootID="&SQL(0,i)) Else ParentStr=SQL(3,i) & "," & SQL(0,i) 'Set Trs=Dvbbs.Execute("Select Sum(PostNum),Sum(TopicNum),Sum(TodayNum),Count(*) From Dv_board Where ParentStr Like '%"&ParentStr&"%'") End If Set Trs=Dvbbs.Execute("Select Sum(PostNum),Sum(TopicNum),Sum(TodayNum),Count(*) From Dv_board Where ParentStr Like '%"&ParentStr&"%'") If Not (Trs.Eof And Trs.Bof) Then '如果该版面允许发贴,则帖子数应该是该版面贴数+下属版面帖子数 If reBoard_Setting(43)="0" Then If Not IsNull(Trs(0)) Then AllArticle = Trs(0) + AllArticle If Not IsNull(Trs(1)) Then AllTopic = Trs(1) + AllTopic If Not IsNull(Trs(2)) Then AllToday = Trs(2) + AllToday If Not IsNull(Trs(3)) Then AllBoard = Trs(3) + AllBoard Else AllArticle=Trs(0) AllTopic=Trs(1) AllToday=Trs(2) AllBoard=Trs(3) If IsNull(AllArticle) Then AllArticle=0 If IsNull(AllTopic) Then AllTopic=0 If IsNull(AllToday) Then AllToday=0 If IsNull(AllBoard) Then AllBoard=0 End If End If Set Trs=Nothing '下属版块ID ParentStr = Sql(0,i) Set Trs = Dvbbs.Execute("SELECT Boardid FROM Dv_Board WHERE ParentID = "&Sql(0,i)) If Not (Trs.Eof And Trs.Bof) Then Do While Not Trs.Eof ParentStr = ParentStr & "," & Trs(0) Trs.Movenext Loop End If Set Trs=Nothing '最后回复信息 Set Trs=Dvbbs.Execute("Select Top 1 LastPost,TopicID,Title,PostTable From Dv_Topic Where BoardID In ("&ParentStr&") Order by LastPostTime Desc") If Not (Trs.Eof And Trs.Bof) Then LastPostArr = Split(Trs(0)&"","$") If UBound(LastPostArr)<>7 Then ReDim LastPostArr(7) LastPostArr(1)=Trs(3) LastPostArr(3)= Replace(cutStr(Dvbbs.Replacehtml(Trs(2)),20),"$","$") LastPostArr(6)=Trs(1) Trs.Close:Set Trs=Nothing Set Trs = Dvbbs.Execute("Select Top 1 AnnounceID,BoardID,UserName,DateAndTime,PostUserID From "&LastPostArr(1)&" Where RootID="&LastPostArr(6)&" Order by DateAndTime") If Not (Trs.Eof And Trs.Bof) Then LastPostArr(0) = Trs(2) LastPostArr(1) = Trs(0) LastPostArr(2) = Trs(3) LastPostArr(4) = "" LastPostArr(5) = Trs(4) LastPostArr(7) = Trs(1) Else LastPostArr(0) = "无" LastPostArr(1) = 0 LastPostArr(2) = now() LastPostArr(3) = "无" LastPostArr(4) = "" LastPostArr(5) = "" LastPostArr(6) = "" LastPostArr(7) = "" End if Else LastPostArr(3)= Replace(cutStr(Trs(2),20),"$","$") End if Trs.Close:Set Trs=Nothing LastPost=Join(LastPostArr,"$") LastPost=Replace(Dvbbs.Replacehtml(LastPost&""),"'","''") 'LastPost=Replace(Dvbbs.Replacehtml(Trs(0)&""),"'","''") Else Trs.Close:Set Trs=Nothing LastPost="无$0$"&Now()&"$无$$$$" End If '更新版面数据 'SLastPost = Split(LastPost,"$") 'If Ubound(SLastPost) < 7 Then LastPost = LastPost & "$" Dvbbs.Execute("Update [Dv_board] Set PostNum="&AllArticle&",TopicNum="&AllTopic&",TodayNum="&AllToday&",LastPost='"&Dvbbs.ChkBadWords(LastPost)&"' Where BoardID="&SQL(0,i)) End If '更新IsGroupSetting 'IsGroupSetting=SQL(7,i) 'Set Trs=Dvbbs.Execute("Select Count(*) From Dv_UserAccess Where uc_BoardID="&SQL(0,i)) 'UserAccessCount = Trs(0) 'If IsNull(UserAccessCount) Or UserAccessCount="" Then UserAccessCount=0 'If UserAccessCount>0 Then UpGroupSetting="0" 'Set Trs=Dvbbs.Execute("Select GroupID From Dv_BoardPermission Where BoardID="&SQL(0,i)) 'If Not Trs.Eof Then ' Do While Not Trs.Eof ' If UpGroupSetting="" Then ' UpGroupSetting = Trs(0) ' Else ' UpGroupSetting = UpGroupSetting & "," & Trs(0) ' End If ' Trs.MoveNext ' Loop 'End If '更新和清理固顶贴数据(固顶和区域固顶) 'Set Trs=Dvbbs.Execute("Select TopicID From Dv_Topic Where BoardID="&Rs(0)&" And IsTop In (1,2)") If Not IsNull(SQL(6,i)) And SQL(6,i)<>"" Then Set Trs=Dvbbs.Execute("Select TopicID,BoardID,IsTop From Dv_Topic Where TopicID In ("&SQL(6,i)&")") If tRs.Eof And tRs.Bof Then BoardTopStr="" Else Do While Not Trs.Eof If Trs(1)<>444 And Trs(1)<>777 And Trs(2)>0 And Trs(2)<>3 Then If BoardTopStr="" Then BoardTopStr = Trs(0) Else BoardTopStr = BoardTopStr & "," & Trs(0) End If End If Trs.MoveNext Loop End If End If Dvbbs.Execute("Update Dv_Board Set BoardTopStr='"&BoardTopStr&"' Where BoardID="&SQL(0,i)) UserAccessCount="" IsGroupSetting="" UpGroupSetting="" BoardTopStr="" ii=ii+1 'If (i mod 100) = 0 Then Response.Write "<script>img2.width=" & Fix((ii/C1) * 400) & ";" & VbCrLf Response.Write "txt2.innerHTML=""" & FormatNumber(ii/C1*100,4,-1) & """;" & VbCrLf Response.Write "img2.title=""" & SQL(0,i) & "(" & ii & ")"";</script>" & VbCrLf Response.Flush 'End If body="<table cellpadding=0 cellspacing=0 border=0 width=100% align=center><tr><td colspan=2 class=td1>更新论坛数据成功,"&SQL(1,i)&"共有"&AllArticle&"篇贴子,"&AllTopic&"篇主题,今日有"&AllToday&"篇帖子。</td></tr></table>" Response.Write body Response.Flush 'Rs.MoveNext 'Loop Next Set Trs=Nothing End If body="" Response.Write "<script>img2.width=400;txt2.innerHTML=""100"";</script>" Dvbbs.loadSetup() Dim Board Dvbbs.LoadBoardList() For Each board in Application(Dvbbs.CacheName&"_boardlist").documentElement.selectNodes("board/@boardid") Dvbbs.LoadBoardData board.text Dvbbs.LoadBoardinformation board.text Next End Sub Rem 统计下属论坛函数 2004-5-3 Dvbbs.YangZheng Sub Boardchild() Dim cBoardNum, cBoardid Dim Trs,rs,Sql,i Dim Bn Dvbbs.Execute("UPDATE Dv_Board SET Child = 0") Set Rs = Dvbbs.Execute("SELECT Boardid, Rootid, ParentID, Depth, Child, ParentStr FROM Dv_Board ORDER BY Boardid DESC") If Not (Rs.Eof And Rs.Bof) Then Sql = Rs.GetRows(-1) Rs.Close:Set Rs = Nothing For Bn = 0 To Ubound(Sql,2) If Isnull(Sql(4,Bn)) And Cint(Sql(3,Bn)) > 0 Then Dvbbs.Execute("UPDATE Dv_Board SET Child = 0 WHERE Boardid = " & Sql(0,Bn)) End If If Cint(Sql(2,Bn)) = 0 And Cint(Sql(3,Bn)) = 0 Then Set Trs = Dvbbs.Execute("SELECT COUNT(*) FROM Dv_Board WHERE RootID = " & Sql(1,Bn)) Cboardnum = Trs(0) - 1 Trs.Close:Set Trs = Nothing If Isnull(Cboardnum) Or Cboardnum < 0 Then Cboardnum = 0 Dvbbs.Execute("UPDATE Dv_Board SET Child = " & Cboardnum & " WHERE Boardid = " & Sql(0,Bn)) Elseif Cint(Sql(3,Bn)) > 1 Then cBoardid = Split(Sql(5,Bn)&"",",") For i = 1 To Ubound(cBoardid) Dvbbs.Execute("UPDATE Dv_Board SET Child = Child + 1 WHERE Boardid = " & cBoardid(i)) Next End If Next End If End Sub Sub Updateall() '主题数,帖子数,用户数,今日贴,昨日贴,总固顶,最后注册 Body = "<tr><td colspan=2 class=td1>更新总论坛数据成功。" Dim AllTopNum,PostNum,TopicNum,LastUser Dim TodayNum,UserNum, YesterdayNum,SqlStr,Sql_a,sql If Request.Form("u1") = "1" Or Request("index")="1" Then TopicNum = GetTopicnum() If Sql_a = "" Then Sql_a = "Forum_TopicNum = " & TopicNum & "" Else Sql_a = Sql_a & ",Forum_TopicNum = " & TopicNum & "" End If If SqlStr = "" Then SqlStr = "论坛共有 " & TopicNum & " 篇主题" Else SqlStr = SqlStr & "," & TopicNum & " 篇主题" End If End If If Request.Form("u2") = "1" Or Request("index")="1" Then PostNum = Announcenum() If Sql_a = "" Then Sql_a = "Forum_PostNum = " & PostNum & "" Else Sql_a = Sql_a & ",Forum_PostNum = " & PostNum & "" End If If SqlStr = "" Then SqlStr = "论坛共有 " & PostNum & " 篇帖子" Else SqlStr = SqlStr & "," & PostNum & " 篇帖子" End If End If If Request.Form("u3") = "1" Or Request("index")="1" Then UserNum = Allusers() If Sql_a = "" Then Sql_a = "Forum_UserNum = " & UserNum & "" Else Sql_a = Sql_a & ",Forum_UserNum = " & UserNum & "" End If If SqlStr = "" Then SqlStr = "论坛共有 " & UserNum & " 个用户" Else SqlStr = SqlStr & "," & UserNum & " 个用户" End If End If If Request.Form("u4") = "1" Or Request("index")="1" Then TodayNum = Alltodays() If Sql_a = "" Then Sql_a = "Forum_TodayNum = " & TodayNum & "" Else Sql_a = Sql_a & ",Forum_TodayNum = " & TodayNum & "" End If If SqlStr = "" Then SqlStr = "论坛共有 " & TodayNum & " 篇今日帖" Else SqlStr = SqlStr & "," & TodayNum & " 篇今日帖" End If End If If Request.Form("u5") = "1" Or Request("index")="1" Then YesterdayNum = Allyesterdays() If Sql_a = "" Then Sql_a = "Forum_YesterdayNum = " & YesterdayNum & "" Else Sql_a = Sql_a & ",Forum_YesterdayNum = " & YesterdayNum & "" End If If SqlStr = "" Then SqlStr = "论坛共有 " & YesterdayNum & " 篇昨日帖" Else SqlStr = SqlStr & "," & YesterdayNum & " 篇昨日帖" End If End If If Request.Form("u6") = "1" Or Request("index")="1" Then AllTopNum = Forum_AllTopNum() If Sql_a = "" Then Sql_a = "Forum_AllTopNum = '" & AllTopNum & "'" Else Sql_a = Sql_a & ",Forum_AllTopNum = '" & AllTopNum & "'" End If If SqlStr = "" Then SqlStr = "论坛共有 " & UBound(Split(AllTopNum&"", ",")) + 1 & " 个固顶主题" Else SqlStr = SqlStr & "," & UBound(Split(AllTopNum&"", ",")) + 1 & " 个固顶主题" End If End If If Request.Form("u7") = "1" Or Request("index")="1" Then LastUser = Newuser() If Sql_a = "" Then Sql_a = "Forum_lastUser = '" & Dvbbs.CheckStr(Dvbbs.HtmlEncode(LastUser)) & "'" Else Sql_a = Sql_a & ",Forum_lastUser = '" & Dvbbs.CheckStr(Dvbbs.HtmlEncode(LastUser)) & "'" End If If SqlStr = "" Then SqlStr = "论坛最新加入用户为 " & LastUser & "" Else SqlStr = SqlStr & ",最新加入用户为 " & LastUser & "" End If End If Body = Body & SqlStr Body = Body & "</td></tr>" If Sql_a = "" Then Exit Sub Sql = "UPDATE Dv_Setup SET " & Sql_a Dvbbs.Execute(Sql) Dvbbs.Name="setup" Dvbbs.loadSetup() End sub Sub fixtopic() if not isnumeric(request.form("beginid")) then body="<tr><td colspan=2 class=td1>错误的开始参数!</td></tr>" exit sub End If if not isnumeric(request.form("endid")) then body="<tr><td colspan=2 class=td1>错误的结束参数!</td></tr>" exit sub end if if clng(request.form("beginid"))>clng(request.form("endid")) then body="<tr><td colspan=2 class=td1>开始ID应该比结束ID小!</td></tr>" exit sub end if dim TotalUseTable,Ers,sql,rs,i dim username,dateandtime,rootid,announceid,postuserid,lastpost,topic 'set rs=Dvbbs.iCreateObject("adodb.recordset") 'Dvbbs.Execute("update Dv_topic set PostTable='dv_bbs1'") Dim C1 C1=clng(request.form("endid"))-clng(request.form("beginid")) %> </table> <BR> <table cellpadding="0" cellspacing="0" border="0" width="100%" align="center"> <tr><td colspan=2 class=td1> 下面开始更新论坛帖子资料,预计本次共有<%=C1%>个帖子需要更新 <table width="400" border="0" cellspacing="1" cellpadding="1"> <tr> <td bgcolor=#000000> <table width="400" border="0" cellspacing="0" cellpadding="1"> <tr> <td bgcolor=#ffffff height=9><img src="../skins/default/bar/bar3.gif" width=0 height=16 id=img2 name=img2 align=absmiddle></td></tr></table> </td></tr></table> <span id=txt2 name=txt2 style="font-size:9pt">0</span><span style="font-size:9pt">%</span></td> </tr> </table> <table cellpadding="0" cellspacing="0" border="0" width="100%" align="center"> <% Response.Flush sql="select topicid,PostTable from Dv_topic where topicid>="&request.form("beginid")&" and topicid<="&request.form("endid") set rs=Dvbbs.Execute(sql) if rs.eof and rs.bof then body="<tr><td colspan=2 class=td1>已经到记录的最尾端,请结束更新!</td></tr>" exit sub end if do while not rs.eof sql="select top 1 username,dateandtime,topic,Announceid,PostUserID,rootid,body,boardid from "&rs(1)&" where rootid="&rs(0)&" order by Announceid desc" set ers=Dvbbs.Execute(sql) if not (ers.eof and ers.bof) then username=Ers("username") dateandtime=Ers("dateandtime") rootid=Ers("rootid") topic=left(Ers("body"),20) Announceid=ers("Announceid") postuserid=ers("postuserid") LastPost=username & "$" & Announceid & "$" & dateandtime & "$" & replace(topic,"$","") & "$$" & postuserid & "$" & rootid & "$" & ers("BoardID") & "$" LastPost=Dvbbs.Checkstr(LastPost) Dvbbs.Execute("update [DV_topic] set LastPost='"&replace(LastPost,"'","")&"',LastPostTime='"&dateandtime&"' where topicid="&rs(0)) i=i+1 'If (i mod 100) = 0 Then Response.Write "<script>img2.width=" & Fix((i/C1) * 400) & ";" & VbCrLf Response.Write "txt2.innerHTML=""更新完"&server.htmlencode(ers(2)&"")&"的数据,正在更新下一个帖子数据," & FormatNumber(i/C1*100,4,-1) & """;" & VbCrLf Response.Write "img2.title=""" & server.htmlencode(eRs(2)&"") & "(" & i & ")"";</script>" & VbCrLf Response.Flush 'End If end if '计算回帖数 2004-8-2 Sql = "SELECT COUNT(*) FROM " & Rs(1) & " WHERE Rootid = " & Rs(0) & " AND Boardid <> 444 AND Boardid <> 777" Set Ers = Dvbbs.Execute(Sql) Dvbbs.Execute("UPDATE Dv_Topic SET Child = " & Ers(0)-1 & " WHERE Topicid = " & Rs(0) & "") Rs.Movenext loop set ers=nothing set rs=nothing Response.Write "<script>img2.width=400;txt2.innerHTML=""100"";</script>" %> <form action="update.asp?action=updat" method=post> <tr> <th style="text-align:center;" colspan=2>继续修复帖子(修复指定范围内帖子的最后回复数据)</th> </tr> <tr> <td width="20%" class="td1">开始的ID号</td> <td width="80%" class="td1"><input type=text name="beginID" value="<%=request.form("endid")+1%>" size=5> 帖子主题ID,可以填写您想从哪一个ID号开始进行修复</td> </tr> <tr> <td width="20%" class="td1">结束的ID号</td> <td width="80%" class="td1"><input type=text name="EndID" value="<%=request.form("endid")+(request.form("endid")-request.form("beginid"))+1%>" size=5> 将更新开始到结束ID之间的帖子数据,之间的数值最好不要选择过大</td> </tr> <tr> <td width="20%" class="td1"> </td> <td width="80%" class="td1"><input type="submit" class="button" name="Submit" value="修 复"></td> </tr> </form> <% end sub '分论坛今日帖子 REM 修改查询所有帖子表数据 2004-8-26.Dv.Yz Function Todays(Boardid) Todays = 0 If IsSqlDataBase = 1 Then For i = 0 To Ubound(AllPostTable) Set Tmprs = Dvbbs.Execute("SELECT COUNT(Announceid) FROM " & AllPostTable(i) & " WHERE Boardid = " & Boardid & " AND DATEDIFF(day, Dateandtime, " & SqlNowString & ") = 0") Todays = Todays + Tmprs(0) Next Else For i = 0 To Ubound(AllPostTable) Set Tmprs = Dvbbs.Execute("SELECT COUNT(Announceid) FROM " & AllPostTable(i) & " WHERE Boardid = " & Boardid & " AND DATEDIFF('d', Dateandtime, " & SqlNowString & ") = 0") Todays = Todays + Tmprs(0) Next End If Set Tmprs = Nothing End Function '全部论坛今日帖子 REM 修改查询所有帖子表数据 2004-8-26.Dv.Yz Function Alltodays() Dim i Alltodays = 0 If IsSqlDataBase = 1 Then For i = 0 To Ubound(AllPostTable) Set Tmprs = Dvbbs.Execute("SELECT COUNT(Announceid) FROM " & AllPostTable(i) & " WHERE NOT Boardid IN (444,777) AND DATEDIFF(day, Dateandtime, " & SqlNowString & ") = 0") Alltodays = Alltodays + Tmprs(0) Next Else For i = 0 To Ubound(AllPostTable) Set Tmprs = Dvbbs.Execute("SELECT COUNT(Announceid) FROM " & AllPostTable(i) & " WHERE NOT Boardid IN (444,777) AND DATEDIFF('d', Dateandtime, " & SqlNowString & ") = 0") Alltodays = Alltodays + Tmprs(0) Next End If Set Tmprs = Nothing End Function '论坛昨天的帖子 2004-8-31.Dv.Yz Function Allyesterdays() Dim i Allyesterdays = 0 If IsSqlDataBase = 1 Then For i = 0 To Ubound(AllPostTable) Set Tmprs = Dvbbs.Execute("SELECT COUNT(Announceid) FROM " & AllPostTable(i) & " WHERE NOT Boardid IN (444,777) AND DATEDIFF(day, Dateandtime, " & SqlNowString & ") = 1") Allyesterdays = Allyesterdays + Tmprs(0) Next Else For i = 0 To Ubound(AllPostTable) Set Tmprs = Dvbbs.Execute("SELECT COUNT(Announceid) FROM " & AllPostTable(i) & " WHERE NOT Boardid IN (444,777) AND DATEDIFF('d', Dateandtime, " & SqlNowString & ") = 1") Allyesterdays = Allyesterdays + Tmprs(0) Next End If Set Tmprs = Nothing End Function '所有注册用户数量 function allusers() allusers=Dvbbs.Execute("Select count(userid) from [Dv_user]")(0) If IsNull(allusers) Then allusers=0 End function '最新注册用户 Function newuser() Dim sql sql="Select top 1 username from [Dv_user] order by userid desc" Set tmprs=Dvbbs.Execute(sql) If tmprs.eof and tmprs.bof Then newuser="没有会员" Else newuser=tmprs("username") End If Set tmprs=Nothing End function '所有论坛帖子 function AnnounceNum() dim AnnNum,i AnnNum=0 AnnounceNum=0 For i=0 to ubound(AllPostTable) AnnNum=Dvbbs.Execute("Select Count(announceID) from "&AllPostTable(i)&" where not boardid in (444,777)")(0) if isnull(AnnNum) then AnnNum=0 AnnounceNum=AnnounceNum + AnnNum next end function '分论坛帖子 function BoardAnnounceNum(boardid) dim BoardAnnNum BoardAnnNum=0 BoardAnnounceNum=0 For i=0 to ubound(AllPostTable) BoardAnnNum=Dvbbs.Execute("Select Count(announceID) from "&AllPostTable(i)&" where boardid="&boardid)(0) if isnull(BoardAnnNum) then BoardAnnNum=0 BoardAnnounceNum=BoardAnnounceNum + BoardAnnNum next end function '所有论坛主题 function GetTopicnum() Dim TopicNum TopicNum=Dvbbs.Execute("Select Count(topicid) from DV_topic where not boardid in (444,777)")(0) if isnull(TopicNum) then TopicNum=0 GetTopicnum = TopicNum end function '分论坛主题 function BoardTopicNum(boardid) BoardTopicNum=Dvbbs.Execute("Select Count(topicid) from [Dv_topic] where boardid="&boardid)(0) if isnull(BoardTopicNum) then BoardTopicNum=0 end function '论坛总固顶主题数 function Forum_AllTopNum() Set tmprs=Dvbbs.Execute("Select TopicID From Dv_Topic Where Not BoardID In (444,777) And IsTop=3") If tmprs.eof and tmprs.bof Then Forum_AllTopNum="" Else Do While Not tmprs.Eof If Forum_AllTopNum="" Then Forum_AllTopNum = tmprs(0) Else Forum_AllTopNum = Forum_AllTopNum & "," & tmprs(0) End If tmprs.MoveNext Loop End If Set tmprs=Nothing end function '更新用户发贴数 sub updateTopic() if not isnumeric(request.form("beginid")) then body="<tr><td colspan=2 class=td1>错误的开始参数!</td></tr>" exit sub end if if not isnumeric(request.form("endid")) then body="<tr><td colspan=2 class=td1>错误的结束参数!</td></tr>" exit sub end if if clng(request.form("beginid"))>clng(request.form("endid")) then body="<tr><td colspan=2 class=td1>开始ID应该比结束ID小!</td></tr>" exit sub end if Dim C1 C1=clng(request.form("endid"))-clng(request.form("beginid")) %> </table> <BR> <table cellpadding="0" cellspacing="0" border="0" width="100%" align="center"> <tr><td colspan=2 class=td1> 下面开始更新论坛用户资料,预计本次共有<%=C1%>个用户需要更新 <table width="400" border="0" cellspacing="1" cellpadding="1"> <tr> <td bgcolor=#000000> <table width="400" border="0" cellspacing="0" cellpadding="1"> <tr> <td bgcolor=#ffffff height=9><img src="../skins/default/bar/bar3.gif" width=0 height=16 id=img2 name=img2 align=absmiddle></td></tr></table> </td></tr></table> <span id=txt2 name=txt2 style="font-size:9pt">0</span><span style="font-size:9pt">%</span></td></tr> </table> <table cellpadding="0" cellspacing="0" border="0" width="100%" align="center"> <% Response.Flush dim userTopic,UserPost,rs,sql,i sql="select userid,username from [Dv_user] where userid>="&request.form("beginid")&" and userid<="&request.form("endid") set rs=Dvbbs.Execute(sql) if rs.eof and rs.bof then body="<tr><td colspan=2 class=td1>已经到记录的最尾端,请结束更新!</td></tr>" exit sub end if do while not rs.eof UserTopic=UserallTopicnum(rs(0)) userPost=Userallnum(rs(0)) Dvbbs.Execute("update [Dv_user] set UserPost="&userPost&",UserTopic="&UserTopic&" where userid="&rs(0)) i=i+1 'If (i mod 100) = 0 Then Response.Write "<script>img2.width=" & Fix((i/C1) * 400) & ";" & VbCrLf Response.Write "txt2.innerHTML=""更新完"&rs(1)&"的数据,正在更新下一个用户数据," & FormatNumber(i/C1*100,4,-1) & """;" & VbCrLf Response.Write "img2.title=""" & Rs(1) & "(" & i & ")"";</script>" & VbCrLf Response.Flush 'End If rs.movenext loop set rs=nothing Response.Write "<script>img2.width=400;txt2.innerHTML=""100"";</script>" %> <FORM METHOD=POST ACTION="?action=updateuserinfo"> <tr> <th style="text-align:center;" colspan=2>继续更新用户数据</th> </tr> <tr> <td width="20%" class="td1">重新计算用户发贴</td> <td width="80%" class="td1">执行本操作将按照<font color=red>当前论坛数据库</font>发贴重新计算所有用户发表帖子数量。</td> </tr> <tr> <td width="20%" class="td1">开始用户ID</td> <td width="80%" class="td1"><input type=text name="beginID" value="<%=request.form("endid")+1%>" size=10> 用户ID,可以填写您想从哪一个ID号开始进行修复</td> </tr> <tr> <td width="20%" class="td1">结束用户ID</td> <td width="80%" class="td1"><input type=text name="endID" value="<%=request.form("endid")+(request.form("endid")-request.form("beginid"))+1%>" size=10> 将更新开始到结束ID之间的用户数据,之间的数值最好不要选择过大</td> </tr> <tr> <td width="20%" class="td1"> </td> <td width="80%" class="td1"><input type="submit" class="button" name="Submit" value="重新计算用户发贴"></td> </tr> </form> <% end sub '更新用户金钱/积分/魅力 sub updatemoney() if not isnumeric(request.form("beginid")) then body="<tr><td colspan=2 class=td1>错误的开始参数!</td></tr>" exit sub end if if not isnumeric(request.form("endid")) then body="<tr><td colspan=2 class=td1>错误的结束参数!</td></tr>" exit sub end if if clng(request.form("beginid"))>clng(request.form("endid")) then body="<tr><td colspan=2 class=td1>开始ID应该比结束ID小!</td></tr>" exit sub end if dim userTopic,userReply,userWealth dim userEP,userCP Dim C1,sql,rs,i C1=clng(request.form("endid"))-clng(request.form("beginid")) %> </table> <BR> <table cellpadding="0" cellspacing="0" border="0" width="100%" align="center"> <tr><td colspan=2 class=td1> 下面开始更新论坛用户资料,预计本次共有<%=C1%>个用户需要更新 <table width="400" border="0" cellspacing="1" cellpadding="1"> <tr> <td bgcolor=#000000> <table width="400" border="0" cellspacing="0" cellpadding="1"> <tr> <td bgcolor=#ffffff height=9><img src="../skins/default/bar/bar3.gif" width=0 height=16 id=img2 name=img2 align=absmiddle></td></tr></table> </td></tr></table> <span id=txt2 name=txt2 style="font-size:9pt">0</span><span style="font-size:9pt">%</span></td></tr> </table> <table cellpadding="0" cellspacing="0" border="0" width="100%" align="center"> <% Response.Flush sql="select userlogins,userid,userpost,usertopic,username from [Dv_user] where userid>="&request.form("beginid")&" and userid<="&request.form("endid") set rs=Dvbbs.Execute(sql) 'shinzeal加入自动提示完成 if rs.eof and rs.bof then body="<tr><td colspan=2 class=td1>已经到记录的最尾端,请结束更新!</td></tr>" exit sub end if do while not rs.eof 'userTopic=UserTopicNum(rs(1)) 'userreply=UserReplyNum(rs(1)) userwealth=rs(0)*Dvbbs.Forum_user(4) + rs("usertopic")*Dvbbs.Forum_user(1) + (rs("userpost")-rs("usertopic"))*Dvbbs.Forum_user(2) userEP=rs(0)*Dvbbs.Forum_user(9) + rs("usertopic")*Dvbbs.Forum_user(6) + (rs("userpost")-rs("usertopic"))*Dvbbs.Forum_user(7) userCP=rs(0)*Dvbbs.Forum_user(14) + rs("usertopic")*Dvbbs.Forum_user(11) + (rs("userpost")-rs("usertopic"))*Dvbbs.Forum_user(12) if isnull(UserWealth) or not isnumeric(userwealth) then userwealth=0 if isnull(Userep) or not isnumeric(userep) then userep=0 if isnull(Usercp) or not isnumeric(usercp) then usercp=0 Dvbbs.Execute("update [Dv_user] set userWealth="&userWealth&",userep="&userep&",usercp="&usercp&" where userid="&rs(1)) i=i+1 'If (i mod 100) = 0 Then Response.Write "<script>img2.width=" & Fix((i/C1) * 400) & ";" & VbCrLf Response.Write "txt2.innerHTML=""更新完"&rs(4)&"的数据,正在更新下一个用户数据," & FormatNumber(i/C1*100,4,-1) & """;" & VbCrLf Response.Write "img2.title=""" & Rs(4) & "(" & i & ")"";</script>" & VbCrLf Response.Flush 'End If rs.movenext loop set rs=nothing Response.Write "<script>img2.width=400;txt2.innerHTML=""100"";</script>" %> <FORM METHOD=POST ACTION="?action=updateuserinfo"> <tr> <th style="text-align:center;" colspan=2>继续更新用户数据</th> </tr> <tr> <td width="20%" class="td1" valign=top>更新用户金钱/积分/魅力</td> <td width="80%" class="td1">执行本操作将按照<font color=red>当前论坛数据库</font>用户的发贴数量和论坛的相关设置重新计算用户的金钱/积分/魅力,本操作也将重新计算贵宾、版主、总版主的数据<BR>注意:不推荐用户进行本操作,本操作在数据很多的时候请尽量不要使用,并且本操作对各个版面删除帖子等所扣相应分值不做运算,只是按照发贴和总的论坛分值设置进行运算,请大家慎重操作,<font color=red>而且本项操作将重置用户因为奖励、惩罚等原因管理员对用户分值的修改。</font></td> </tr> <tr> <td width="20%" class="td1">开始用户ID</td> <td width="80%" class="td1"><input type=text name="beginID" value="<%=request.form("endid")+1%>" size=10> 用户ID,可以填写您想从哪一个ID号开始进行修复</td> </tr> <tr> <td width="20%" class="td1">结束用户ID</td> <td width="80%" class="td1"><input type=text name="endID" value="<%=request.form("endid")+(request.form("endid")-request.form("beginid"))+1%>" size=10> 将更新开始到结束ID之间的用户数据,之间的数值最好不要选择过大</td> </tr> <tr> <td width="20%" class="td1"> </td> <td width="80%" class="td1"><input type="submit" class="button" name="Submit" value="更新用户金钱/积分/魅力"></td> </tr> </form> <% end sub '更新用户等级 sub updategrade() if not isnumeric(request.form("beginid")) then body="<tr><td colspan=2 class=td1>错误的开始参数!</td></tr>" exit sub end if if not isnumeric(request.form("endid")) then body="<tr><td colspan=2 class=td1>错误的结束参数!</td></tr>" exit sub end if if clng(request.form("beginid"))>clng(request.form("endid")) then body="<tr><td colspan=2 class=td1>开始ID应该比结束ID小!</td></tr>" exit sub end if Dim oldMinArticle,Rss,sql,rs oldMinArticle=0 Set Rss=Dvbbs.Execute("Select UserID From [Dv_User] Where UserID>="&Request.Form("beginid")) If Rss.Eof And Rss.Bof Then body="<tr><td colspan=2 class=td1>已经到记录的最尾端,请结束更新!</td></tr>" Exit Sub End If Rss.Close SQL = "Select UserGroupID From Dv_UserGroups Where Not ParentGID In (0,3)" Set Rss = Dvbbs.Execute(SQL) SQL = Rss.GetString(,, "", ",", "") Rss.close Set Rss = Nothing SQL = SQL & "1" Set Rs=Dvbbs.Execute("Select * From Dv_UserGroups Where ParentGID=3 Order By MinArticle Desc") Do While Not Rs.Eof Dvbbs.Execute("Update [Dv_User] Set UserClass='"&Rs("UserTitle")&"',TitlePic='"&Rs("GroupPic")&"',UserGroupID="&Rs("UserGroupID")&" Where (Not UserGroupID In ("&SQL&")) And (UserID>="&Request.Form("beginid")&" And UserID<="&Request.Form("endid")&") And (UserPost<"&oldMinArticle&" And UserPost>="&Rs("MinArticle")&" )") oldMinArticle=Rs("MinArticle") Rs.MoveNext Loop Rs.Close Set Rs=Nothing %> <FORM METHOD=POST ACTION="?action=updateuserinfo"> <tr> <th style="text-align:center;" colspan=2>继续更新用户数据</th> </tr> <tr> <td width="20%" class="td1" valign=top>更新用户等级</td> <td width="80%" class="td1">执行本操作将按照<font color=red>当前论坛数据库</font>用户发贴数量和论坛的等级设置重新计算用户等级,本操作不影响等级为贵宾、版主、总版主的数据。</td> </tr> <tr> <td width="20%" class="td1">开始用户ID</td> <td width="80%" class="td1"><input type=text name="beginID" value="<%=request.form("endid")+1%>" size=10> 用户ID,可以填写您想从哪一个ID号开始进行修复</td> </tr> <tr> <td width="20%" class="td1">结束用户ID</td> <td width="80%" class="td1"><input type=text name="endID" value="<%=request.form("endid")+(request.form("endid")-request.form("beginid"))+1%>" size=10> 将更新开始到结束ID之间的用户数据,之间的数值最好不要选择过大</td> </tr> <tr> <td width="20%" class="td1"> </td> <td width="80%" class="td1"><input type="submit" class="button" name="Submit" value="更新用户等级"></td> </tr> </form> <% end sub '用户所有主题数 function UserTopicNum(userid) dim topicnum topicnum=0 usertopicnum=0 set tmprs=Dvbbs.Execute("select count(*) from dv_topic where not boardid in (444,777) and PostUserID="&userid) TopicNum=tmprs(0) if isnull(TopicNum) then TopicNum=0 UserTopicNum=UserTopicNum + TopicNum set tmprs=nothing end function '用户所有回复数 Function UserReplyNum(userid) dim replynum,i replynum=0 userreplynum=0 For i=0 to ubound(AllPostTable) set tmprs=Dvbbs.Execute("select count(announceid) from "&AllPostTable(i)&" where not boardid in (444,777) and ParentID>0 and PostUserID="&userid) replyNum=tmprs(0) if isnull(replyNum) then replyNum=0 UserReplyNum=UserReplyNum + replynum next set tmprs=nothing end function '用户所有帖子 function Userallnum(userid) dim allnum,i allnum=0 userallnum=0 For i=0 to ubound(AllPostTable) set tmprs=Dvbbs.Execute("select count(announceid) from "&AllPostTable(i)&" where not boardid in (444,777) and PostUserID="&userid) allnum=tmprs(0) if isnull(allnum) then allnum=0 userallnum=userallnum+allnum Next Set tmprs=nothing End function function UserallTopicnum(userid) dim allnum,i allnum=0 UserallTopicnum=0 For i=0 to ubound(AllPostTable) set tmprs=Dvbbs.Execute("select count(*) from Dv_Topic where not boardid in (444,777) and PostUserID="&userid) allnum=tmprs(0) if isnull(allnum) then allnum=0 UserallTopicnum=UserallTopicnum+allnum Next Set tmprs=nothing End function Sub fixbbs() Dim killhtml,updatedate updatedate=Request("updatedate") killhtml=Request("killhtml") If Not IsNumeric(request.form("beginid")) Then body="<tr><td colspan=2 class=td1>错误的开始参数!</td></tr>" Exit Sub End If If Not IsNumeric(request.form("endid")) Then body="<tr><td colspan=2 class=td1>错误的结束参数!</td></tr>" Exit Sub End If If CLng(request.form("beginid"))>clng(request.form("endid")) Then body="<tr><td colspan=2 class=td1>开始ID应该比结束ID小!</td></tr>" Exit Sub End If Dim C1, D1 C1 = clng(request.form("endid"))-clng(request.form("beginid")) D1 = Clng(Request.Form("beginid")) %> </table> <BR> <table cellpadding="0" cellspacing="0" border="0" width="100%" align="center"> <tr><td colspan=2 class=td1> 下面开始更新论坛帖子资料,预计本次共有<%=C1%>个帖子需要更新 <table width="400" border="0" cellspacing="1" cellpadding="1"> <tr> <td bgcolor=#000000> <table width="400" border="0" cellspacing="0" cellpadding="1"> <tr> <td bgcolor=#ffffff height=9><img src="../skins/default/bar/bar3.gif" width=0 height=16 id=img2 name=img2 align=absmiddle></td></tr></table> </td></tr></table> <span id=txt3 name=txt3 style="font-size:9pt;color:red;"></span> <span id=txt2 name=txt2 style="font-size:9pt">0</span><span style="font-size:9pt">%</span></td></tr> </table> <table cellpadding="0" cellspacing="0" border="0" width="100%" align="center"> <% Response.Flush Dim TotalUseTable,Ers,SQL1 Dim vBody,isagree,re Dim Maxid,Rs,Sql,i Set Rs=Dvbbs.Execute("select Max(topicid) from dv_topic") Maxid=Rs(0) Set Rs=Nothing If Maxid< CLng(request.form("beginid")) Then body="<tr><td colspan=2 class=td1>已经到记录的最尾端,请结束更新!</td></tr>" set rs=nothing Exit Sub End If Sql = "SELECT Topicid, PostTable FROM Dv_Topic WHERE Topicid >= " & CLng(Request.Form("beginid")) & " AND Topicid <= " & CLng(Request.Form("endid")) & " ORDER BY TopicID" Set Rs=Dvbbs.Execute(sql) Set ERs=Dvbbs.iCreateObject("adodb.recordset") Do While Not rs.eof SQl1 ="select Body,isagree,Ubblist,topic,DateAndTime,Announceid from "&Rs(1)&" where Rootid="&CLng(Rs(0))&"" Ers.open SQL1,Conn,1,3 If Not(eRs.eof OR ers.BOF) Then Do While Not ers.eof vbody=eRs(0) isagree=eRs(1) If IsNull(isagree) Then isagree="" If isagree <>"" Then isagree=Replace(isagree,"[isubb]","") Else isagree=ers(1) End If If killhtml="1" Then eRs(0)=vbody End If ers(1)= isagree&"" If IsDate(updatedate) And IsDate(ers(4)) Then If updatedate > ers(4) Then ers(2)=Ubblist(vbody) Else If killhtml="1" Then Set re=new RegExp re.IgnoreCase =true re.Global=True re.Pattern="<br>" vbody=re.Replace(vbody,"[br]") re.Pattern="<(.[^>]*)>" vbody=re.Replace(vbody,"") Set re=Nothing End If ers(2)=UbblistOLD(vbody) End If Else ers(2)=UbblistOLD(vbody) End If ers.update Response.Write "<script>txt3.innerHTML=""更新完编号为"&eRs(5)&"的帖子数据,"";</script>" Response.Flush eRs.movenext Loop End If ERs.close i = CLng(Rs(0)) - D1 + 1 '修正i为相对位置值 2005-12-3 Dv.Yz 'If (i mod 100) = 0 Then Response.Write "<script>img2.width=" & Fix((i/C1) * 400) & ";" & VbCrLf Response.Write "txt2.innerHTML=""更新完编号为"&Rs(0)&"的数据,正在更新下一个帖子数据," & FormatNumber(i/C1*100,4,-1) & """;" & VbCrLf Response.Write "img2.title=""" & Rs(0) & "(" & i & ")"";</script>" & VbCrLf Response.Flush 'End If Rs.movenext Loop Set ers=nothing set rs=nothing Response.Write "<script>img2.width=400;txt3.innerHTML='';txt2.innerHTML=""100"";</script>" %> <form name=Fix action="update.asp?action=fix" method=post> <tr> <th style="text-align:center;" colspan=2>继续修复帖子(修复指定范围贴子UBB标签)</th> </tr> <tr> <td width="20%" class="td1">开始的ID号</td> <td width="80%" class="td1"><input type=text name="beginID" value="<%=request.form("endid")+1%>" size=5> 帖子主题ID,可以填写您想从哪一个ID号开始进行修复</td> </tr> <tr> <td width="20%" class="td1">结束的ID号</td> <td width="80%" class="td1"><input type=text name="EndID" value="<%=request.form("endid")+(request.form("endid")-request.form("beginid"))+1%>" size=5> 将更新开始到结束ID之间的帖子数据,之间的数值最好不要选择过大</td> </tr> <tr> <td width="20%" class="td1">新老贴的标识日期</td> <td width="80%" class="td1"><input type="text" name="updatedate" value="<%=updatedate%>">(格式:YYYY-M-D) 就是论坛升级到v7.0的日期,如果不填写,一律按老贴处理</td> </tr> <tr> <td width="20%" class="td1">去掉贴子中的HTML标记</td> <td width="80%" class="td1"><input type="radio" class="radio" name="killhtml" value="1" <% If killhtml="1" Then %> checked <% End If %> > 是 <input type="radio" class="radio" name="killhtml" value="0" <% If killhtml="0" Then %> checked <% End If %> > 否 <br>选是的话,贴子中的HTML标记将会自动被清除,有利于减少数据库的大小,但是会失去原来的HTML效果。</td> </tr> <tr> <td width="20%" class="td1"> </td> <td width="80%" class="td1"><input type="submit" class="button" name="Submit" value="修 正"></td> </tr> </form> <% End Sub '清空在线用户 2004-10-11 Dv.Yz Sub Delallonline() Dim Sql Sql = "DELETE FROM Dv_Online" Dvbbs.Execute(Sql) Body = "<tr><td colspan=2 class=td1>清空在线用户数据成功,请 <a href=""ReloadForumCache.asp""><font color=""red"">更新服务器缓存</font> </a>。" End Sub '更新论坛收藏夹 2005-11-30 Dv.Yz Sub Updatebm() Dim bi,Rs,Sql Set Rs = Dvbbs.Execute("SELECT Id, Url, UserName FROM Dv_BookMark ORDER BY Id") If Not (Rs.Eof And Rs.Bof) Then Sql = Rs.GetRows(-1) Set Rs = Nothing Dim Url, RootID, BoardID, Topic Dim C1 C1 = Ubound(Sql,2) + 1 %> <table cellpadding="0" cellspacing="0" border="0" width="100%" align="center"> <tr><td colspan=2 class=td1> 下面开始更新收藏夹资料,预计本次共有<%=C1%>个收藏主题需要更新 <table width="400" border="0" cellspacing="1" cellpadding="1"> <tr> <td bgcolor=#000000> <table width="400" border="0" cellspacing="0" cellpadding="1"> <tr> <td bgcolor=#ffffff height=9><img src="../skins/default/bar/bar3.gif" width=0 height=16 id=img2 name=img2 align=absmiddle></td></tr></table> </td></tr></table> <span id=txt3 name=txt3 style="font-size:9pt;color:red;"></span> <span id=txt2 name=txt2 style="font-size:9pt">0</span><span style="font-size:9pt">%</span></td></tr> </table> <% For bi = 0 To Ubound(Sql,2) Set Rs = Dvbbs.Execute("SELECT UserName From Dv_User WHERE UserName = '" & Sql(2,bi) & "'") If Rs.Eof And Rs.Bof Then Dvbbs.Execute("DELETE FROM Dv_BookMark WHERE Id = " & Sql(0,bi)) Response.Write "<script>txt3.innerHTML=""删除完编号为" & Sql(0,bi) & "的收藏夹数据,"";</script>" Response.Flush Else Set Rs = Nothing RootID = Split(Split(Sql(1,bi),"&")(1),"=")(1) If Isnumeric(RootID) Then RootID = Clng(Rootid) Else RootID = 0 End If Set Rs = Dvbbs.Execute("SELECT BoardID, TopicID, Title FROM Dv_Topic WHERE NOT BoardID IN (444,777) AND TopicID = " & RootID) If Rs.Eof And Rs.Bof Then Dvbbs.Execute("DELETE FROM Dv_BookMark WHERE Id = " & Sql(0,bi)) Response.Write "<script>txt3.innerHTML=""删除完编号为" & Sql(0,bi) & "的收藏夹数据,"";</script>" Response.Flush Else Boardid = Rs(0) RootID = Rs(1) Topic = Rs(2) Topic = Left(Dvbbs.checkStr(trim(topic)),100) Url = "dispbbs.asp?boardid=" & Boardid & "&id=" & RootID Dvbbs.Execute("UPDATE Dv_BookMark SET Url = '" & Url & "', Topic = '" & Topic & "' WHERE Id = " & Sql(0,bi)) Response.Write "<script>txt3.innerHTML=""更新完编号为" & Sql(0,bi) & "的收藏夹数据,"";</script>" Response.Flush End If End If Response.Write "<script>img2.width=" & Fix((bi/C1) * 400) & ";" & VbCrLf Response.Write "txt2.innerHTML=""更新完编号为" & Sql(0,bi) & "的数据,正在更新下一个收藏夹数据," & FormatNumber(bi/C1*100,4,-1) & """;" & VbCrLf Response.Write "img2.title=""" & Sql(2,bi) & "(" & bi & ")"";</script>" & VbCrLf Response.Flush Next Response.Write "<script>img2.width=400;txt3.innerHTML='更新完成!<a href=" & Request.ServerVariables("HTTP_REFERER") & "><<返回上一页</a>';txt2.innerHTML=""100"";</script>" Else %> <table cellpadding="0" cellspacing="0" border="0" width="100%" align="center"> <tr><td colspan=2 class=td1>收藏夹资料为空,不需要更新!</td></tr> </table> <% End If End Sub Function cutStr(str,strlen) Str=Dvbbs.Replacehtml(Str) Dim l,t,c,i l=Len(str) t=0 For i=1 to l c=Abs(Asc(Mid(str,i,1))) If c>255 Then t=t+2 Else t=t+1 End If If t>=strlen Then cutStr=left(str,i)&"..." Exit For Else cutStr=str End If Next cutStr=Replace(cutStr,chr(10),"") cutStr=Replace(cutStr,chr(13),"") End Function %>